package com.xiaoshuidi.cloud.module.guanwang.service.index;

import com.xiaoshuidi.cloud.framework.common.pojo.CommonResult;
import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.rooms.api.home.vo.*;
import com.xiaoshuidi.cloud.module.rooms.api.map.vo.GetMapRespApiVO;
import com.xiaoshuidi.cloud.module.rooms.api.map.vo.MetroRouteRespApiVO;
import com.xiaoshuidi.cloud.module.rooms.api.map.vo.MetroSiteRespApiVO;
import com.xiaoshuidi.cloud.module.rooms.api.roomlayout.vo.GetRoomLayoutByApartmentRespVO;

import java.util.List;

public interface WebApartmentService {
    CommonResult<Object> recommendApartment(Integer id, Long apartmentId);

    /**
     * 根据门店列表, 获取门店下的房型, 随机返回5条记录
     * @return
     */
    CommonResult<List<GetRoomLayoutByApartmentRespVO>> choiceRoomLayout();

    /**
     * 门店详情
     * @param apartmentId
     * @return
     */
    CommonResult<ApartmentInfoRespApiVO> getApartmentInfo(Long apartmentId);

    /**
     * 散房详情
     *
     * @param roomHouseId
     * @return
     */
    CommonResult<RoomHouseInfoRespApiVO> getRoomHouseInfo(Long roomHouseId);

    /**
     * 房源详情-同房源其他房间
     * @param roomHouseId
     * @param tenantId
     * @return
     */
    CommonResult<List<OtherRoomsInTheSameListingRespApiVO>> otherRoomsInTheSameListing(Long roomHouseId, Long tenantId);

    /**
     * 房源详情-推荐附近房源
     * @param roomHouseId
     * @param tenantId
     * @return
     */
    CommonResult<List<OtherRoomsInTheSameListingRespApiVO>> recommendListingsNearYou(Long roomHouseId, Long tenantId);

    /**
     * 房型详情
     * @param apartmentId
     * @param layoutId
     * @return
     */
    CommonResult<GetLayoutInfoRespApiVO> getLayoutInfo(Long apartmentId, Long layoutId);

    /**
     * 地图找房
     * @param maxLongitude
     * @param minLongitude
     * @param maxLatitude
     * @param minLatitude
     * @param zoom
     * @param tenantId
     * @param isConcentrated
     * @param district
     * @param monthRentalMin
     * @param monthRentalMax
     * @param longitude
     * @param latitude
     * @param isWhole
     * @param bedRoomNum
     * @param publicFacilities
     * @param roomHouseState
     * @return
     */
    CommonResult<List<GetMapRespApiVO>> mapFindRoom(Double maxLongitude, Double minLongitude, Double maxLatitude, Double minLatitude, Double zoom, Long tenantId, Boolean isConcentrated, String district, Double monthRentalMin, Double monthRentalMax, Double longitude, Double latitude, Boolean isWhole, Integer bedRoomNum, String publicFacilities, String roomHouseState);

    /**
     * 地图找房-搜索
     * @param searchBox
     * @param isConcentrated
     * @param roomHouseState
     * @param pageNo
     * @param pageSize
     * @param tenantId
     * @return
     */
    CommonResult<PageResult<GetMapRespApiVO>> mapFindSearch(String searchBox, Boolean isConcentrated, String roomHouseState, Integer pageNo, Integer pageSize, Long tenantId);

    /**
     * 获取所有地铁线路
     * @return
     */
    CommonResult<List<MetroRouteRespApiVO>> getMetroRoute();

    /**
     * 获取地铁线路下的站点
     * @param id
     * @return
     */
    CommonResult<List<MetroSiteRespApiVO>> getMetroSite(Long id);

    /**
     * 集中式-找房
     * @return
     */
    CommonResult<PageResult<ConcentratedFindHouseRespApiVO>> concentratedFindHouse(String searchBox, String district, Double monthRentalMin, Double monthRentalMax, Double longitude, Double latitude, Integer sortRule, Boolean isWhole, Integer bedRoomNum, String publicFacilities, String lon, String lat, Integer pageNum, Integer pageSize);

    /**
     * 分散式-找房
     * @return
     */
    CommonResult<PageResult<NoConcentratedFindHouseRespApiVO>> noConcentratedFindHouse(String searchBox, String district, Double monthRentalMin, Double monthRentalMax, Double longitude, Double latitude, Integer sortRule, Boolean isWhole, Integer bedRoomNum, String publicFacilities, Long roomAreaId, Integer pageNum, Integer pageSize);
}
